package hl.crazy_java.chapter_16;

/**
 * join() 方法： 当 A 程序中某一时刻 调用了 B.join() ,则阻塞 A 去执行 B，直到 B 被执行完，A 继续执行
 * join(long ms) 方法： 原理同上，只是 A 等待 B 执行的时间为 n ms 当超过时间则继续执行，不等待了。
 *
 * @author Liu Huan
 */
class ControlThread extends Thread {
    // 定义一个构造器，给当前线程 命名
    public ControlThread(String name) {
        super(name);
    }

    // 重写 run 方法
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(getName() + " " + i);
        }
    }
}

class ControlTest {
    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);

            if (i == 5) {
                var ct = new ControlThread("被join线程");
                ct.start();
                ct.join();
            }

        }
    }
}